//var URL = "http://localhost/sx_hoteles/api";
var URL = "http://pruebas.somxarxa.es/sx_hoteles/api/index.php";
var API_KEY = "&api_key=xxxxxxx";
var ID_HOTEL = "?id_hotel=2";
//TODO: Mejorar nombre de variables, o incluso sacar esto datos a configuracion
var SOLO_API_KEY = "xxxxxxx";
var SOLO_ID_HOTEL = "2";
/**
*   Objeto para obtener todos los datos de los servicios.
*/
var JSONPServiciosAdapter = function(idioma_param) {
    
    var url = URL + "/servicios";
    var idioma = idioma_param;

    var servicios;
    var data = 
    {
        type : 'Servicios',     
         
        done : function(servicios_callback)
            {
                //servicios_callback([{nombre_menu:"Habitaciones",id:"2"},{nombre_menu:"Restaurantes",id:"3"}]);
                servicios_callback(servicios);
            }
    }

    this.findAll = function() {
        //TODO: establecer un tiempo para la cache, o solo gastar al cache por sesion
        var adapterServicios = new LocalStorageServiciosAdapter();
        servicios = adapterServicios.getServiciosDinamicos();

        if(servicios === null || servicios === "") {
            console.log("Servicios vacio, devolvemos ajax");
            return $.ajax(
            {
                url: url + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp",
                success: function(data, textStatus, xhr){
                    console.log("Guardamos servicios en memoria local ");
                    adapterServicios.setServiciosDinamicos(data);
                }
            });

        } else {
            console.log("devolvemos data");
            return data;
        }
    }

    this.findById = function(id) {
        return $.ajax(
            {
                url: url + "/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de los Telefonoes
*/
var JSONPTelefonosAdapter = function(idioma_param) {
    
    var url = URL + "/telefonos" + ID_HOTEL;
    var idioma = idioma_param;

    this.findAll = function() {
        return $.ajax(
            {
                url: url + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos del hotel
*/
var JSONPHotelAdapter = function(idioma_param) {
    
    var url = URL + "/hotel";
    var idioma = idioma_param;

    this.findInfo = function() {
        return $.ajax(
            {
                url: url + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }

    this.findWeather = function() {
        return $.ajax(
            {
                url: url + "/weather" + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de los Restaurantes
*/
var JSONPRestaurantesAdapter = function(idioma_param) {
    
    var url = URL + "/restaurantes";
    var idioma = idioma_param;

    this.findAll = function() {
        return $.ajax(
            {
                url: url + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }

    this.findById = function(id) {
        return $.ajax(
            {
                url: url + "/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp",
                timeout: 2000,
                success: function(data, textStatus, xhr){
                    console.log("DFM " + String(data));
                    console.log(xhr.readyState);
                    console.log(xhr.status);
                    console.log(textStatus);
                },
                error: function (x, t, m) {
                    console.log("ADAPTER RESTAURANTE: findById ERROR");
                    alert("Error pruebe de nuevo");
                }
            });
    }

    this.findGalleryById = function(id) {
        return $.ajax(
            {
                url: url + "/galeria/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY,
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de los Restaurantes
*/
var JSONPHabitacionesAdapter = function(idioma_param) {
    
    var url = URL + "/habitaciones";
    var idioma = idioma_param;

    this.findAll = function() {
        return $.ajax(
            {
                url: url + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }

    this.findById = function(id) {
        return $.ajax(
            {
                url: url + "/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp",
                timeout: 2000,
                success: function(data, textStatus, xhr){
                    console.log("DFM " + String(data));
                    console.log(xhr.readyState);
                    console.log(xhr.status);
                    console.log(textStatus);
                },
                error: function (x, t, m) {
                    console.log("ADAPTER HABITACION: findById ERROR");
                    alert("Error pruebe de nuevo");
                }
            });
    }
    this.findGalleryById = function(id) {
        return $.ajax(
            {
                url: url + "/galeria/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY,
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de los servicios generales
*/
var JSONPGeneralesAdapter = function(idioma_param) {
    
    var url = URL + "/generales";
    var idioma = idioma_param;

    this.findAll = function() {
        return $.ajax(
            {
                url: url + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }

    this.findById = function(id) {
        return $.ajax(
            {
                url: url + "/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de las Ofertas
*/
var JSONPOfertasAdapter = function(idioma_param) {
    
    var url = URL + "/ofertas";
    var idioma = idioma_param;

    this.findAll = function() {
        return $.ajax(
            {
                url: url + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }

    this.findById = function(id) {
        return $.ajax(
            {
                url: url + "/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp",
                timeout: 2000,
                success: function(data, textStatus, xhr){
                    console.log("DFM " + String(data));
                    console.log(xhr.readyState);
                    console.log(xhr.status);
                    console.log(textStatus);
                },
                error: function (x, t, m) {
                    console.log("ADAPTER OFERTA: findById ERROR");
                    alert("Error pruebe de nuevo");
                }
            });
    }
    this.findGalleryById = function(id) {
        return $.ajax(
            {
                url: url + "/galeria/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY,
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de los Eventos
*/
var JSONPEventosAdapter = function(idioma_param) {
    
    var url = URL + "/eventos";
    var idioma = idioma_param;

    this.findAll = function() {
        return $.ajax(
            {
                url: url  + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }

    this.findById = function(id) {
        return $.ajax(
            {
                url: url + "/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp",
                timeout: 2000,
                success: function(data, textStatus, xhr){
                    console.log("DFM " + String(data));
                    console.log(xhr.readyState);
                    console.log(xhr.status);
                    console.log(textStatus);
                },
                error: function (x, t, m) {
                    console.log("ADAPTER EVENTO: findById ERROR");
                    alert("Error pruebe de nuevo");
                }
            });
    }

    this.findGalleryById = function(id) {
        return $.ajax(
            {
                url: url + "/galeria/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY,
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de los Eventos
*/
var JSONPLugaresAdapter = function(idioma_param) {
    
    var url = URL + "/lugares";
    var idioma = idioma_param;

    this.findAll = function() {
        return $.ajax(
            {
                url: url  + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }

    this.findById = function(id) {
        return $.ajax(
            {
                url: url + "/" + id + ID_HOTEL + "&idioma=" + idioma + API_KEY, 
                dataType: "jsonp"
            });
    }
}

/**
*   Objeto para obtener todos los datos de los Telefonoes
*/
var JSONPPushAdapter = function() {
    
    var url = URL + "/push/device";
    //var idioma = idioma_param;

    this.registrarEnServidor = function(regId){
        $.ajax({
            type: 'POST',
            url: url,
            data: { 
                'regId': regId,
                'name': device.uuid, // <-- the $ sign in the parameter name seems unusual, I would avoid it
                'id_hotel': SOLO_ID_HOTEL,
                'api_key': SOLO_API_KEY
                },
            success: function(msg){
                console.log("LOG PUSH: Añadido a mi database");
                window.localStorage.setItem("regId", "OK");
            },
            error: function(msg_err){
                alert('error' + msg_err);
            }
        });
    }
}















/****** EJEMPLOS APP ALERTAS *****************/

/**
*   Objeto para obtener Noticias, el estado siempre es 1. TODO: Estado dinámico.. pero en principio no hace falta
*/
var JSONPNoticiasAdapter = function(url_param, idioma_param) {
    
    var url = url_param + "/noticias";
    var idioma = idioma_param;

    this.initialize = function(data) {
        url = typeof data !== 'undefined' ? data : "http://coenraets.org/directory/api/employees";
        var deferred = $.Deferred();
        deferred.resolve();
        return deferred.promise();
    }

    this.findById = function(id) {
        return $.ajax({url: url + "/" + id + "?idioma=" + idioma, dataType: "jsonp"});
    }

    this.findAll = function() {
        return $.ajax(
            {
                url: url + "?idioma=" + idioma + "&estado=1", 
                dataType: "jsonp"
            });
    }

    this.findByName = function(searchKey) {
        return $.ajax({url: url + "?name=" + searchKey, dataType: "jsonp"});
    }
}

/*var JSONPEventosAdapter = function(url_param, idioma_param, estado_param) {
    
    var url = url_param + "/eventos";
    var idioma = idioma_param;

    this.initialize = function(data) {
        url = typeof data !== 'undefined' ? data : "http://coenraets.org/directory/api/employees";
        var deferred = $.Deferred();
        deferred.resolve();
        return deferred.promise();
    }

    this.findById = function(id) {
        return $.ajax({url: url + "/" + id + "?idioma=" + idioma, dataType: "jsonp"});
    }

    this.findAll = function() {
        return $.ajax(
            {
                url: url + "?idioma=" + idioma + "&estado=" +estado_param,
                async: false, 
                dataType: "jsonp"
            });
    }

    this.findByName = function(searchKey) {
        return $.ajax({url: url + "?name=" + searchKey, dataType: "jsonp"});
    }
}
*/

var JSONPCategoriasAdapter = function(url_param, idioma_param, estado_param) {
    
    var url = url_param + "/categorias";
    var idioma = idioma_param;

    this.findById = function(id) {
        return $.ajax({url: url + "/" + id + "?idioma=" + idioma, dataType: "jsonp"});
    }

    this.findAll = function() {
        return $.ajax(
            {
                url: url + "?idioma=" + idioma + "&estado=" +estado_param, 
                dataType: "jsonp"
            });
    }

    this.findByFiltro = function(filtro) {
        return $.ajax({url: url + "/filtro?idioma=" + idioma + "&estado=" +estado_param + "&filtro=" + filtro, dataType: "jsonp"});
    }
}

